كيفية تحرير ملف Sudoers على Ubuntu و CentOS: دليل شامل ومفصل
يُعتبر ملف sudoers من أهم الملفات في نظامي التشغيل Linux، سواء في توزيعة Ubuntu أو CentOS، إذ يتحكم في كيفية استخدام الأوامر بصلاحيات المستخدم الجذر (root) عبر أمر sudo. تحرير هذا الملف بشكل صحيح يضمن إدارة آمنة وفعالة لصلاحيات المستخدمين، ويمنع الأخطاء التي قد تؤدي إلى تعطل النظام أو تعريضه لمخاطر أمنية.
يهدف هذا المقال إلى تقديم شرح موسع ودقيق لكيفية تحرير ملف sudoers على توزيعتي Ubuntu وCentOS، مع التركيز على التفاصيل الفنية والأمان، وتوضيح خطوات العمل بشكل مفصل.
1. مفهوم ملف Sudoers وأهميته
ملف sudoers هو ملف نصي يُحدد من يمكنه تنفيذ أوامر بصلاحيات المدير (root) باستخدام الأمر sudo، ويوجد عادةً في المسار:
bash/etc/sudoers
هذا الملف لا يجب تحريره مباشرة باستخدام محرر نصوص عادي مثل vim أو nano لأن أي خطأ في التهيئة قد يمنع استخدام sudo تمامًا، مما يجعل الوصول إلى صلاحيات المدير مستحيلاً. بدلاً من ذلك، يجب استخدام الأداة visudo التي تتحقق من صحة الصيغة قبل الحفظ.
2. أهمية استخدام visudo لتحرير ملف sudoers
الأداة visudo هي أداة مخصصة لتحرير ملف sudoers، وتقوم بما يلي:
-
تفتح الملف في محرر نصوص (عادةً vi أو محرر آخر حسب الإعداد).
-
تتحقق من صحة قواعد التهيئة قبل الحفظ، بحيث تمنع الأخطاء النحوية التي قد تؤدي إلى تعطيل نظام sudo.
-
تمنع تحرير الملف من قبل أكثر من مستخدم في نفس الوقت.
-
تقوم بحفظ النسخة الأصلية إذا حدث خطأ.
3. خطوات تحرير ملف sudoers باستخدام visudo على Ubuntu
3.1 الوصول إلى النظام
في البداية، يجب أن يكون المستخدم يمتلك صلاحيات لاستخدام sudo. على Ubuntu، يتمتع المستخدم الأول الذي يُنشأ أثناء التثبيت بصلاحيات sudo بشكل افتراضي.
3.2 تنفيذ الأمر visudo
لفتح الملف للتحرير:
bashsudo visudo
هذا الأمر سيطلب كلمة المرور الخاصة بالمستخدم الذي يستعمل sudo، ثم يفتح الملف في المحرر الافتراضي.
3.3 تعديل الملف
داخل المحرر، يمكن إضافة أو تعديل الصلاحيات بصيغة دقيقة جدًا. مثال على إضافة مستخدم جديد بصلاحيات sudo كاملة:
bashusername ALL=(ALL) ALL
-
usernameهو اسم المستخدم المراد منحه صلاحيات. -
ALLالأولى تعني أن المستخدم يمكنه تنفيذ الأوامر على أي مضيف. -
(ALL)تعني أن المستخدم يمكنه تنفيذ الأوامر بأي هوية. -
ALLالأخيرة تعني جميع الأوامر.
يمكن أيضًا تقييد الأوامر المسموح بها لمستخدم معين.
3.4 حفظ الملف والتحقق
عند الخروج من المحرر (مثلاً باستخدام :wq في vi)، يتحقق visudo من صحة الملف. إذا وُجد خطأ نحوي، سيتم إعلام المستخدم وسيُطلب تعديل الخطأ قبل الحفظ.
4. خطوات تحرير ملف sudoers على CentOS
تختلف CentOS في بعض النواحي عن Ubuntu، لكن مبدأ تحرير ملف sudoers باستخدام visudo هو نفسه تقريبًا.
4.1 الوصول إلى النظام
يجب أن يكون المستخدم عضوًا في مجموعة wheel على CentOS ليتمكن من استخدام sudo. يمكن التحقق من ذلك عبر:
bashgroups username
وإذا لم يكن العضو في المجموعة، يمكن إضافته باستخدام:
bashsudo usermod -aG wheel username
4.2 تحرير الملف باستخدام visudo
كما في Ubuntu:
bashsudo visudo
يفتح الملف للتحرير في المحرر الافتراضي.
4.3 تعديل الصلاحيات
يمكن تعديل الملف لمنح صلاحيات sudo للمستخدم أو تعديل قواعد المجموعة wheel. بشكل افتراضي في CentOS، الصلاحيات تمنح للمجموعة wheel، وهذه السطر يكون موجودًا غالبًا ومُعطلًا بالتعليق:
bash# %wheel ALL=(ALL) ALL
لتمكين صلاحيات sudo لأعضاء المجموعة wheel، يجب إزالة علامة التعليق:
bash%wheel ALL=(ALL) ALL
وبذلك يمكن للمستخدمين في هذه المجموعة استخدام sudo.
5. إضافة قواعد خاصة ومخصصة في ملف sudoers
من الممارسات الشائعة إضافة قواعد خاصة لتقييد أو تمكين صلاحيات معينة لمستخدم أو مجموعة. الصيغة العامة في sudoers تسمح بمرونة كبيرة:
5.1 مثال لتقييد أمر معين لمستخدم معين
bashusername ALL=(ALL) /usr/bin/systemctl restart httpd.service
هذا يعني أن المستخدم username يستطيع تنفيذ أمر إعادة تشغيل خدمة Apache فقط.
5.2 السماح لمجموعة كاملة بتنفيذ أوامر محددة بدون كلمة مرور
bash%groupname ALL=(ALL) NOPASSWD: /usr/bin/apt-get update, /usr/bin/apt-get upgrade
يُستخدم هذا لتجنب طلب كلمة المرور عند تنفيذ أوامر التحديث لمجموعة محددة.
6. تنظيم sudoers عبر مجلد sudoers.d
بدلاً من تعديل ملف sudoers الرئيسي، يمكن إضافة ملفات مستقلة في مجلد:
bash/etc/sudoers.d/
هذه الطريقة تساعد في التنظيم وسهولة الصيانة، وتمنع التداخل في التعديلات.
يمكن إنشاء ملف جديد داخل هذا المجلد، مثلاً:
bashsudo visudo -f /etc/sudoers.d/custom_rules
ثم إضافة القواعد المرغوبة.
7. تحذيرات وممارسات أمان عند تحرير ملف sudoers
-
عدم تحرير الملف مباشرة بدون visudo: الأخطاء النحوية قد تؤدي لفقدان وصول sudo.
-
الحد من صلاحيات sudo: منح أقل صلاحيات ممكنة للمستخدمين للحد من المخاطر.
-
استخدام مجلد sudoers.d للتنظيم: لتقليل التداخل وزيادة الأمان.
-
النسخ الاحتياطي قبل التعديل: عمل نسخة من ملف sudoers قبل التعديل أمر ضروري.
8. مقارنة بين Ubuntu و CentOS في التعامل مع sudoers
| الخاصية | Ubuntu | CentOS |
|---|---|---|
| محرر الملف الافتراضي | vi أو nano (حسب الإعداد) | vi (عادة) |
| صلاحيات sudo الافتراضية | للمستخدم الأول فقط | لأعضاء مجموعة wheel |
| مجلد sudoers.d | موجود ويُستخدم | موجود ويُستخدم |
| تمكين صلاحيات wheel | غير مستخدم بشكل افتراضي | يجب إزالة تعليق السطر الخاص بـ wheel |
| استخدام visudo | ضروري لمنع الأخطاء | ضروري لمنع الأخطاء |
9. أمثلة عملية لتعديل ملف sudoers
9.1 منح مستخدم صلاحيات كاملة على Ubuntu
bashusername ALL=(ALL) ALL
9.2 تقييد مستخدم لتنفيذ أمر إعادة تشغيل خدمة nginx فقط على CentOS
bashusername ALL=(ALL) /bin/systemctl restart nginx.service
9.3 السماح لمجموعة dev باستخدام أوامر git بدون كلمة مرور
bash%dev ALL=(ALL) NOPASSWD: /usr/bin/git
10. الخلاصة
تحرير ملف sudoers على أنظمة Ubuntu وCentOS هو عملية حساسة تحتاج معرفة دقيقة وصحيحة بطريقة التعديل باستخدام أداة visudo. يجب التعامل بحذر مع التعديلات لتجنب فقدان صلاحيات الإدارة أو التسبب بمشاكل أمنية.
الاستفادة من مجلد sudoers.d لتنظيم القواعد، وعدم منح صلاحيات زائدة، والالتزام بالممارسات الأمنية يُعد من أساسيات الإدارة السليمة للنظام. هذه الخطوات تضمن استقرار النظام وأمانه مع الحفاظ على سهولة استخدام sudo للمستخدمين المصرح لهم.
المراجع
بهذا ينتهي الشرح التفصيلي لكيفية تحرير ملف sudoers على Ubuntu و CentOS مع التركيز على الأمان والدقة والمرونة في التخصيص.

